Libero Scenes
LW-BenchHub utilizes USD-based scene environments built on Isaacsim's robust simulation foundation for the Lightwheel-Libero-Tasks, providing diverse manipulation scenarios across different room types.
USD-Based Scene Architecture
Libero scenes are built using Universal Scene Description (USD) format, providing:
- High-fidelity rendering with realistic lighting and materials
- Fully interactive objects including furniture, containers, and manipulable items
- Physics-accurate simulation through IsaacLab's physics engine
- Optimized performance for large-scale parallel training
Scene Distribution System
Remote Scene Loading
LW-BenchHub implements a distributed scene management system that automatically handles scene acquisition:
# Scenes are automatically downloaded and cached
scene_name = "libero-1-1" # Scene identifier
Caching Architecture
- Local cache:
~/.cache/lightwheel_sdk/floorplan/ - Automatic versioning: Ensures scene consistency across updates
- Incremental download: Only downloads new or updated scenes
- ZIP compression: Efficient scene package distribution
Scene Configuration
Scene Types
| Scene ID | Scene Type | Description | Key Features |
|---|---|---|---|
libero-1-1 | Kitchen Scene | Kitchen environment with table top setup | Kitchen-specific objects and furniture layout |
libero-2-2 | Living Room Scene | Living room environment for manipulation tasks | Living room furniture and object arrangements |
libero-4-4 | Study Scene | Study room environment with desk and storage | Study-specific furniture and object placement |
libero-5-5 | Floor Task Scene | Floor-level manipulation environment | Ground-level tasks with floor-based objects |
libero-8-8 | Kitchen Scene | Different kitchen background for advanced tasks | Alternative kitchen layout with complex scenarios |
Technical Implementation
SceneLoader Class
The core scene management is handled by the FloorplanLoader:
from lw_benchhub.core.scenes.loader.floorplan import FloorplanLoader
# Initialize loader with remote server
loader = FloorplanLoader(host="scene_server_host")
# Asynchronous scene acquisition
loader.acquire_usd(scene='libero', layout_id=1, style_id=1)
usd_path = loader.wait_for_result()
Scene Integration
class LiberoEnvCfg(LwScene):
scene_name: str = "libero-1-1"
layout_id: int = 1
style_id: int = 1
scene_type: str = "libero"
# Enable specific objects for tasks
enable_objects: List[str] = ["mokapot", "stovetop"]
Object Management
Interactive Elements
Libero scenes include fully functional objects across different environments:
Kitchen Scenes (1-1, 8-8)
- Containers: Baskets, bowls, plates, mugs
- Food Items: Alphabet soup, cream cheese, butter
- Beverages: Wine bottles, various containers
- Utensils: Kitchen tools and accessories
Living Room Scene (2-2)
- Furniture: Sofa, foods, mugs
- Decorative Items: Household objects and accessories
- Containers: Living room appropriate storage items
Study Scene (4-4)
- Desk Accessories: Books, study materials, desk organizers
- Storage: Shelves, cabinets, storage containers
- Study Tools: Writing instruments, reference materials
Floor Task Scene (5-5)
- Ground-level Objects: Floor-based containers and items
- Low-height Furniture: Accessible from ground level
- Floor Storage: Ground-level storage solutions
Task-Scene Matching Examples
task_scene_mapping = {
# Kitchen tasks
"L90K9TurnOnTheStove": "libero-1-1",
"LSPickUpTheBlackBowlFromTableCenterAndPlaceItOnThePlate": "libero-8-8",
# Living room tasks
"L10L2PutBothTheCreamCheeseBoxAndTheButterInTheBasket": "libero-2-2",
# Study room tasks
"L90S4PickUpTheBookOnTheLeftAndPlaceItOnTopOfTheShelf": "libero-4-4",
# Floor tasks
"LOPickUpTheAlphabetSoupAndPlaceItInTheBasket": "libero-5-5",
}
These Libero scenes provide a comprehensive testing environment for evaluating robotic manipulation capabilities across various scenarios and complexity levels.